// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ICloudStorageAccount.cs" company="AzureContrib (Open source library http://azurecontrib.codeplex.com)">
//   Microsoft Public License (Ms-PL)
// </copyright>
// <summary>
//   Exception for errors when handling Windows Azure Cloud Drives.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

using System;
using Microsoft.WindowsAzure;

namespace AzureContrib.WindowsAzure.StorageClient
{
	/// <summary>
	/// All Cloud Storage Accounts have a name and an <see cref="Uri"/> and are versionable
	/// </summary>
	public interface ICloudStorageAccount
	{
		/// <summary>
		/// Gets the <see cref="CloudStorageAccount.QueueEndpoint"/>
		/// </summary>
		Uri QueueEndpoint { get; }

		/// <summary>
		/// Gets the <see cref="CloudStorageAccount.BlobEndpoint"/>
		/// </summary>
		Uri BlobEndpoint { get; }

		/// <summary>
		/// Gets the <see cref="CloudStorageAccount.TableEndpoint"/>
		/// </summary>
		Uri TableEndpoint { get; }

		/// <summary>
		/// Gets the wrapped <see cref="CloudStorageAccount.Credentials"/>
		/// </summary>
		IStorageCredentials Credentials { get; }

		/// <summary>
		/// Gets the <see cref="string"/> representation of the <see cref="CloudStorageAccount.ToString()"/>.
		/// </summary>
		/// <returns><see cref="CloudStorageAccount"/> as a <see cref="string"/>.</returns>
		string ToString();

		/// <summary>
		/// Gets the <see cref="string"/> representation of the <see cref="CloudStorageAccount.ToString()"/>.
		/// </summary>
		/// <param name="exportSecrets">
		/// True if you want to export Secrets.
		/// </param>
		/// <returns><see cref="CloudStorageAccount"/> as a <see cref="string"/>.</returns>
		string ToString(bool exportSecrets);
	}
}